﻿/************************************************************************
  Скрипты к контрольчику редактору справочников типа ключ-значение 
************************************************************************/

// Анбиндим и биндим событие клика на див
function BindSettingEvents() {
    $('.EditableSetting')
        .unbind('click', SettingClick)
        .bind('click', SettingClick);    
}

// Биндим событие клика на удаление
function BindDeleteSettingEvents() {
    $('.DeleteSetting').click(function() {
        var ctrlkey = $(this).parent().parent().parent().attr('ctrlkey');
        var key = $(this).parent().attr('key');
        DeleteSetting(key, ctrlkey); 
    });
}

// Клик на диве, превращаем его в текстбокс, а при блуре - назад в див
function SettingClick() {
    var innerhtml = $(this).html();
    var key = $(this).parent().parent().attr('key');
    var ctrlkey = $(this).parent().parent().parent().parent().attr('ctrlkey');   
    $(this).replaceWith('<textarea class="TextAreaSetting CurrentSetting">' + innerhtml + '</textarea>');
    $('.CurrentSetting')
    .blur(function() {
        $(this).replaceWith('<div class="EditableSetting" key="' + key + '">' + $(this).val() + '</div>');
        BindSettingEvents();
        SettingChanged(key, $(this).val(), ctrlkey);
    })
    .focus();
}

// Изменяем значение в словаре
function SettingChanged(key, value, ctrlkey) {   
    $.$({ ctrlkey: ctrlkey, op: 'setvalue', key: key, val: value });
}

// Удаляем значение из словаря
function DeleteSetting(key, ctrlkey) {   
    $.$({ ctrlkey: ctrlkey, op: 'deletevalue', key: key });
}

// Пробуем добавить новое значение
function TryAddNewSetting(ctrlkey) {
    if ($('#new_setting_key').val() == '') return;
    if ($('#new_setting_value').val() == '') return;
    SettingChanged($('#new_setting_key').val(), $('#new_setting_value').val(), ctrlkey);
}

// Первая инициализация
$(function() {
    BindSettingEvents();
    BindDeleteSettingEvents();
});

